202601311428 Async 的 syncify 在哪个事件循环中执行的 async 代码?

202601311428 Async 的 syncify 在哪个事件循环中执行的 async 代码?

之前看过 Asyncer 的代码,有这么一句话

使用raise_sync_error=False,如果 syncify 在 worker thread(异步的线程池上下文) 中执行,可以将异步函数从worker thread 中发送到主异步线程运行。

现在验证一下

import asyncio

import anyio
from anyio import to_thread
from asyncer import syncify

async def do_async_work(name: str):
    await anyio.sleep(1)
    print(f"Hello, {name}")
    return f"Hello, {name}"

@syncify
async def sync_work(name: str):
    res = await do_async_work(name)
    return res


async def main():
    async_io_event_loop = asyncio.get_event_loop()
    print(f"async_io_event_loop: {async_io_event_loop}, id: {id(async_io_event_loop)}")
    await to_thread.run_sync(thread_main)


def thread_main():
    res = sync_work("Johh")
    print(f"res: {res}")


if __name__ == "__main__":
    anyio.run(main)